/**
 * @param {number} n
 * @return {string}
 * 「外观数列」是一个整数序列，从数字 1 开始，序列中的每一项都是对前一项的描述。前五项如下：
 * 1.     1
 * 2.     11
 * 3.     21 两个1
 * 4.     1211 一个2一个1
 * 5.     111221
 */
// 21 => 1211
// 翻译
// DDD => doman driven development
function translate(s) {
  let counter = 0 // 计数器
  let lastChar = s[0] // 上一个字符
  let result = '' // 结果
  for (let i = 0; i<s.length; i++) {
    const c = s[i]
    if (c !== lastChar) {
      result += `${counter}${lastChar}`
      counter = 1 // counter重置到1
    } else {
      counter++
    }
    lastChar = c
  }
  if (counter > 0) {
    result += `${counter}${lastChar}`
  }
  return result
}

var countAndSay = function (n) {
  let s = '1'
  for (let i = 1; i < n; i++) {
    s = translate(s)
  }
  return s
};